﻿using System;
using System.Collections.Generic;
using System.Text;

namespace AudioPlayer.Plugin {
	public interface IPluginBase {
		/// <summary>
		/// Loads plugin
		/// </summary>
		void Load();
		/// <summary>
		/// Unloads plugin.
		/// </summary>
		void Unload();
		/// <summary>
		/// Gets a value indicating whether this plugin is loaded, and ready to use
		/// </summary>
		/// <value><c>true</c> if loaded; otherwise, <c>false</c>.</value>
		bool Loaded {get;}

		/// <summary>
		/// Gets or sets a value indicating whether this plugin should automaticaly lad.
		/// </summary>
		/// <value><c>true</c> if loads automaticaly; otherwise, <c>false</c>.</value>
		bool AutoLoad { get; set; }
		/// <summary>
		/// Gets the plugin.
		/// </summary>
		/// <value>The plugin.</value>
		IPlugin Plugin { get; }

		/// <summary>
		/// Gets the total load.
		/// </summary>
		/// <value>The total load.</value>
		int TotalLoad { get; }
		/// <summary>
		/// Gets the total fail.
		/// </summary>
		/// <value>The total fail.</value>
		int TotalFail { get; }
	}
	public interface IPluginBase<TPlugin> : IPluginBase {
		/// <summary>
		/// Gets the plugin.
		/// </summary>
		/// <value>The plugin.</value>
		new TPlugin Plugin { get; }
	}
}
